package com.signin.service;

import com.signin.model.dto.SignInSessionDTO;
import com.signin.model.dto.StudentSignInDTO;
import com.signin.model.entity.SignInRecord;

import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface SignInService {

    // 创建签到会话
    SignInSessionDTO createSignInSession(SignInSessionDTO sessionDTO);
    
    // 开始签到
    boolean startSignIn(Long sessionId);
    
    // 结束签到
    boolean endSignIn(Long sessionId);
    
    // 学生签到
    boolean studentSignIn(Long sessionId, StudentSignInDTO signInDTO);
    
    // 获取签到会话信息
    SignInSessionDTO getSignInSession(Long sessionId);
    
    // 获取签到学生列表
    List<SignInRecord> getSignInRecords(Long sessionId);
    
    // 导出签到数据
    byte[] exportSignInData(Long sessionId);
    
    // 获取当前进行中的签到会话
    SignInSessionDTO getCurrentActiveSession();
    
    // 获取指定教室的进行中签到会话
    SignInSessionDTO getCurrentActiveSessionByClassroom(String classroom);
    
    // 查询历史签到会话（支持分页）
    Map<String, Object> queryHistoricalSessions(String classroom, Date startDate, Date endDate, int page, int pageSize);
    
    // 兼容旧版本的查询方法
    List<Map<String, Object>> queryHistoricalSessions(String classroom, Date startDate, Date endDate);
    
    // 踢出签到学生
    boolean kickOutStudent(Long sessionId, String studentName);
    
    // 导出历史签到数据
    byte[] exportHistoricalData(Map<String, Object> params);
    
    // 导入Excel签到数据
    Map<String, Object> importSignInData(InputStream inputStream);

}